home *** CD-ROM | disk | FTP | other *** search
/ WINMX Assorted Textfiles / Ebooks.tar / Text - Mathematics - Numerical Mathematics and Computing (F).zip / sch.f < prev    next >
Text File  |  2002-06-11  |  1KB  |  52 lines

  1. C
  2. C PAGE 300: NUMERICAL MATHEMATICS AND COMPUTING, CHENEY/KINCAID, 1985
  3. C
  4. C FILE: SCH.FOR
  5. C
  6. C INTERPOLATES TABLE USING SCHOENBERG'S PROCESS (SCH,ESCH,F)
  7. C
  8.       DIMENSION D(22),X(101),Y(101),Z(101)
  9.       EXTERNAL F, ESCH
  10.       DATA A,B,N,NP2,M/-5.,5.,20,22,101/
  11.       CALL SCH(F,A,B,NP2,D) 
  12.       PRINT 2,(D(J),J=1,NP2)
  13.  2    FORMAT(1X,5E25.15)
  14.       H=(B-A)/FLOAT(M-1)
  15.       DO 3 J=1,M
  16.       X(J)=A+H*FLOAT(J-1) 
  17.       Y(J)=ESCH(A,B,NP2,D,X(J)) 
  18.  3    Z(J)=Y(J)-F(X(J)) 
  19.       DO 4 J=1,M
  20.  4    PRINT 2,X(J),Y(J),Z(J)
  21.       STOP
  22.       END 
  23.   
  24.       FUNCTION F(X) 
  25.       F=1.0/(X**2+1.0)
  26.       RETURN
  27.       END 
  28.   
  29.       SUBROUTINE SCH(F,A,B,NP2,D)     
  30.       DIMENSION  D(NP2)     
  31.       H = (B - A)/REAL(NP2-3) 
  32.       DO 2 J = 2,NP2-1      
  33.    2  D(J) = F(A + H*REAL(J-2))       
  34.       D(1) = 2.0*D(2) - D(3)
  35.       D(NP2) = 2.0*D(NP2-1) - D(NP2-2)
  36.       RETURN      
  37.       END 
  38.   
  39.       FUNCTION ESCH(A,B,NP2,D,X)      
  40.       DIMENSION  D(NP2)     
  41.       H = (B - A)/REAL(NP2-3) 
  42.       C = A - 2.5*H 
  43.       Y = (X - C)/H 
  44.       J = INT(Y)  
  45.       Y = Y - AINT(Y)       
  46.       P = D(J+1)*Y + D(J)*(2.0 - Y)   
  47.       Q = D(J)*(Y + 1.0) + D(J-1)*(1.0 - Y)     
  48.       ESCH = (P*Y + Q*(1.0 - Y))*0.5  
  49.       RETURN      
  50.       END 
  51.  
  52.